/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, Text, TextArea, useTheme, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {setupItemAreaRoute} from "./orcIspConfig";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {EachMeasureItemConfig} from "../../common/measure";
import {itemA结论} from "../../lift/hydlicDj/editor";
import {itemA技术见证} from "../../elevator/stest/editor";
import {itemA制动距} from "../flWeituo/Braking";


const 车架结构选=["三支点整体车架结构","四支点整体车架结构","铰接车架结构"];
const 驾驶方式选=["坐驾","站驾","步驾"];
export const 试验条件选=["符合要求","不符合要求"];
export const 设备情况选=["正常","不正常"];
export const config设备概况 = [
            //叉车：流动也得改地址？
    [['产品名称', '_$设备名称'], ['设备使用地所在区域', '_$使用地区域'] ],
    [['产品型号', '_$型号'],  ['设备使用地点','_$设备使用地点', ] ],
    [['产品编号', '_$出厂编号'], ['内部编号','_$单位内部编号'], ],
    [['额定载重量','_$额定载荷','kg'],  ['车牌编号','_$上路号牌'], ],
    [['车架编号', '_$底盘编号'], ['发动机(行走电机)编号', '_$发动机号'] ],
    [['动力方式','_$动力方式'], ['传动方式', '_$传动方式'],  ],
    [['车架结构', {n:'车架构',t:'l',l:车架结构选}], ['驾驶方式', {n:'驾驶式',t:'l',l:驾驶方式选}],  ],
    [['空载最大起升高度', '_$最大升高','mm'],  [{pr:'防爆', span:3, t:'设备保护级别'},  '_$防爆等级'] ],
    [['空载最大运行速度', '_$运行速度','km/h'],  [{t:'气体/粉尘组别'},  '粉尘组'] ],
    [['自重', '_$自重量','kg'],  [{t:'温度组别'},  '温度组'] ],
    [['制造日期', '_$制造日期'], ['检验意见通知书编号','意通知号'], ],
    [['检验类别', '_$检验类别'], ['试验条件', {n:'试验条',t:'l',l:试验条件选}], ],
    [['检验前设备状况',{n:'检前况',t:'l',l:设备情况选}], ['检验后设备状况',{n:'检后况',t:'l',l:设备情况选}], ],
    //设备产权单位所在区域 ，没有从后端提取?  还是改用：地址。
    [['统一社会信用代码', '_$使用单位信用码'], ['设备产权单位所在地', '_$产权单位地址']],
    [['安全管理员', '安全员'], ['安全管理员移动电话', '安全员电'] ],
          //固定电话:=
    [['管理部门类型','_$使管部类型'], ['使用单位联系电话', '_$使用单位电话'], ],
    [['使用单位','_$使用单位'] ],
    [['使用单位地址', '_$使用单位地址'] ],
    [['分支机构地址', '_$分支机构地址'] ],
    [['产权单位', '_$产权单位'] ],
    [['制造单位', '_$制造单位'] ],
    [['改造单位','_$改造单位']],
    [['修理单位','_$维修单位']],
    [['现场检验条件',{r:'见附录B'}]],
    [['检验依据',{r:'参照《场（厂）内专用机动车辆安全技术规程》(TSG 81－2022)'}]],
];

/**测量表：太多了可拆成两个编辑器； 注意：t: [] 不同于 t: [undefined,undefined,undefined]；
 * */
export const config观测数据 = [
    [{n: '电池电间', t: ['2.8(3)','①','蓄电池金属盖或者非金属盖的金属部件与蓄电池带电部分之间的间隙'], cit:'30 ＜ X', u: 'mm',c: '四', d: '0'},
    ],
    [{check: '2.8(3)1', }],
    [{n: '绝缘层间', t: [undefined,'②','如盖板和带电部分之间具有绝缘层时的间隙'], cit:'10 ≤ X',c: '四', d: '0'},
    ],
    [{check: '2.8(3)2', }],
    [{n: '胎壁裂长', t: ['2.10','(5)','充气轮胎胎面和胎壁的破裂和割伤长度'],  u: 'mm', cit:'25 ≥ X',c: '四', d: '0'},
    ],
    [{check: '2.10(5)', }],
    [{n: '货开口尺', t: ['2.16','(10)','挡货架两个开口尺寸中的较小尺寸'], cit:'150 ≥x', u: 'mm',c: '四', d: '0'},
    ],
    [{check: '2.16(10)', }],
] as EachMeasureItemConfig[][];

export const EntranceSetup =
    React.forwardRef((
        {show, alone = true, verId, rep}: InternalItemProps, ref
) => {
    const theme = useTheme();
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        const impressionismAs = setupItemAreaRoute({rep, noDefault: true, theme});
        const result = assertNamesUnique([{value: rep?.tzFields}, {value: impressionismAs?.Item, type: 'impr'},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA结论, ...itemA技术见证, ] },
            {value: config观测数据, type:'mesB'},
            {value:[...itemA制动距, ] },
            {value:['unq','仪器表','检验条件', ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast,theme]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show} alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                    JSON.parse(e.currentTarget.value??'[]');
                    setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});
